键盘输入


GameMaker Studio 2 中处理键盘时,你可以使用各种函数识别不同的键盘状态,如按下或释放。还有一些将所有按键存储为字符串或者可以告诉你按下的最后一个键是什么,以及其他允许你完全清除键盘状态的按键。

注意: 这些函数仅适用于 Windows / Mac / Ubuntu 桌面平台。你可能会发现某些内置变量和常量在其他平台上无效,并且许多函数无法在移动设备上运行。


来自一个(或多个)键的每个输入字符由其 UTF8 码(一个数值)定义的。可以使用 ord() 函数检索任何字符的值,GameMaker Studio 2 也有一系列 常量 用于最常用的键盘特殊键和特殊函数。通常,你将 ord()keyboard_check *() 函数结合使用,如下所示:

if keyboard_check(ord("A"))
    {
    hspeed = -5;
    }


因此,上面将检查 “A” 键,如果它被按下,那么它将把物体的水平速度设置为 -5。 注意,以这种方式使用 ord() 只有在输入字符串长度仅有一个字符并且是 0 到 9 之间的数字或 大写 的 A 到 Z 的罗马字符时函数才能正常工作。函数 ord() 将返回完整的 UTF8 值,但 keyboard_check *() 函数将 仅检测 A - Z 和 0 - 9。但是如果你想使用方向键怎么办?或者,如果要使用 “shift” 键修改操作? 好吧,为此 GameMaker Studio 2 有一系列 vk_常量(vk_ 代表 虚拟键盘)使得你可以用来代替 ord()

常量 描述
vk_nokey 表示没有按下任何键的键代码
vk_anykey 表示按下任意键的键码
vk_left 左箭头键的键码
vk_right 右箭头键的键码
vk_up 上箭头键的键码
vk_down 下箭头键的键码
vk_enter enter 键
vk_escape esc 键
vk_space space 键
vk_shift 任何一个 shift 键
vk_control 任何一个 control 键
vk_alt alt 键
vk_backspace backspace 键
vk_tab tab 键
vk_home home 键
vk_end end 键
vk_delete delete 键
vk_insert insert 键
vk_pageup pageup 键
vk_pagedown pagedown 键
vk_pause pause/break 键
vk_printscreen printscreen/sysrq 键
vk_f1 ... vk_f12 功能键 F1 至 F12 的键码
vk_numpad0 ... vk_numpad9 数字键盘上的数字键
vk_multiply 数字键盘上的乘号键(*)
vk_divide 数字键盘上的除号键(/)
vk_add 数字键盘上的加号键(+)
vk_subtract 数字键盘上的减号键(-)
vk_decimal 数字小键盘上的小数点键(.)

以下常量只能与 keyboard_check_direct() 一起使用:

常量 描述
vk_lshift 左 shift 键
vk_lcontrol 左 control 键
vk_lalt 左 alt 键
vk_rshift 右 shift 键
vk_rcontrol 右 control 键
vk_ralt 右 alt 键
以下是如何使用 vk_ 常量的一个小示例:

if keyboard_check_pressed(vk_tab)
    {
    instance_create_layer(x, y, "Controllers", obj_Menu);
    }


上面的代码将检测是否 按下 “Tab” 键并创建物体 “obj_Menu” 的实例(如果是)。

如果你需要检查一个不是 0 - 9,A - Z 或其中一个 VK 常量的关键字符,那么你应该检查一个 keyboard_* 变量,比如keyboard_lastchar

var _key = keyboard_lastchar;
if ord(_key) == ord("ç")
    {
    show_debug_message("ç key pressed");
    }


有关可用的 GameMaker Studio 2 键盘函数的信息,请参阅本手册的以下部分:


以下变量内置于 GameMaker Studio 2,可以访问并获取有关键盘状态和输入的信息:

注意:当使用 虚拟键盘 时,仅有 keyboard_string 变量将在使用键盘输入时更新。
  1. keyboard_key_press
  2. keyboard_key_release
  3. keyboard_key
  4. keyboard_lastkey
  5. keyboard_lastchar
  6. keyboard_string